home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene Storm
/
Scene Storm - Volume 1.iso
/
coding
/
c
/
jpegagasrc
/
jpegaga
/
aslfiles.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-11-08
|
3KB
|
124 lines
/* Display an ASL file requester */
#include <libraries/asl.h>
#include <workbench/startup.h>
#define __NOLIBBASE__
#include <proto/exec.h>
#include <proto/asl.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXFILES 500
extern char *PicArray[];
extern int NumPictures;
extern short ASLPicSelect;
extern void CloseDisplay(void);
extern struct ScreenModeRequester *smr;
void ExitASL(void);
static struct FileRequester *fr = NULL;
struct TagItem frtags[] =
{
{ ASLFR_InitialPattern,"#?.(jpg|jpeg)" },
{ ASLFR_DoMultiSelect, (ULONG)TRUE },
{ ASLFR_DoPatterns, (ULONG)TRUE },
{ ASLFR_RejectIcons, (ULONG)TRUE },
{ TAG_DONE, (ULONG)TRUE }
};
extern struct Library *AslBase;
void ChooseFiles(void)
{
struct WBArg *frargs;
int x,i;
ASLPicSelect=0;
if(!AslBase) AslBase=OpenLibrary("asl.library", 39L);
if(AslBase)
{
if(!fr) fr = (struct FileRequester *)AllocAslRequest(ASL_FileRequest, frtags);
if(fr)
{
if( AslRequest(fr, NULL) )
{
/* multiselect */
if(fr->rf_NumArgs)
{
frargs=fr->rf_ArgList;
for(x=0; x < fr->rf_NumArgs; x++)
{
PicArray[NumPictures] = malloc(strlen(fr->rf_Dir)+strlen(frargs[x].wa_Name)+3);
if(!PicArray[NumPictures]) ExitASL();
strcpy(PicArray[NumPictures], fr->rf_Dir);
i = strlen(fr->rf_Dir);
if(i)
{
i--;
if(fr->rf_Dir[i] != ':' && fr->rf_Dir[i] != '/')
strcat(PicArray[NumPictures], "/");
}
strcat(PicArray[NumPictures], frargs[x].wa_Name);
/* puts(PicArray[NumPictures]); */
NumPictures++;
if(NumPictures == MAXFILES)
{
printf("Too many files!\n");
break;
}
ASLPicSelect=1;
}
}
else
{
/* only one file selected */
PicArray[NumPictures] = malloc(strlen(fr->rf_Dir)+strlen(fr->rf_File)+3);
if(!PicArray[NumPictures]) ExitASL();
strcpy(PicArray[NumPictures], fr->rf_Dir);
i = strlen(fr->rf_Dir);
if(i)
{
i--;
if(fr->rf_Dir[i] != ':' && fr->rf_Dir[i] != '/')
strcat(PicArray[NumPictures], "/");
}
strcat(PicArray[NumPictures], fr->rf_File);
NumPictures++;
ASLPicSelect=1;
}
}
}
}
}
void FreeASL(void)
{
if(fr) FreeAslRequest(fr);
fr = NULL;
if(smr) FreeAslRequest(smr);
smr = NULL;
if(AslBase) CloseLibrary(AslBase);
AslBase = NULL;
}
void ExitASL(void)
{
printf("Out of memory!\n");
FreeASL();
CloseDisplay();
exit(10);
}